iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0
DevOps

從 AWS 轉生到 GCP 世界,還順便轉職成 DevOps 的 SRE系列 第 26

將 Infra 從 Code-Base 改為 Cloud-Resource-Base 外傳 pipreqs

  • 分享至 

  • xImage
  •  

在協助 DS 完成 CICD 部署的過程中,為了確保環境跟 lib 一致,我們有使用 pipreqs,他會自動掃整份 folder 看 python 有什麼相依的 lib ,如果有發現就匯出成 requirement.txt,但有遇到以下問題

  • 當掃描檔案遇到 Non-UTF-8 encoded files or Binary files 的時候就會失敗

    • 從 ChatGPT 我們可以得到 UTF-8 是現今常用的編碼,也是 pipreqs 內建的。但某些舊系統是採用 ISO-8859-1。而有些時候,因為ISO-8859-1 包含任何可能的 8 位字節,所以是可以通用的,這邊先暫時使用 pipreqs . --encoding=iso-8859-1來處理
  • 遇到安裝套件有優先順序,在這邊的 case 是要安裝 numpydatasetspaddleocrdatasets 3.0.1 需要 numpy>=1.17paddleocr 2.8.1 需要 numpy<2.0

    • 這題我的解法是結合pip-compile來處理,pipreqs 是會抓到當前 project 內用的 package,而 pip-compile 會從 requirements.in 來查找全部 package 的相依套件。我在這邊的設定是將 pipreqs 生成 requirements.in,然後讓 pip-compile 根據此 ini 檔來產生最終的 txt 套件

上一篇
將 Infra 從 Code-Base 改為 Cloud-Resource-Base Part5
下一篇
將 Infra 從 Code-Base 改為 Cloud-Resource-Base Part6
系列文
從 AWS 轉生到 GCP 世界,還順便轉職成 DevOps 的 SRE30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言